
https://labuladong.online/algo/data-structure-basic/hash-set/
今天是學習的第 16 天,主要學習了哈希集合的原理及程式碼實現:
哈希集合簡單來說就是對哈希表的再次封裝,實作原理是:
key-value
key,忽略值因此哈希集合的 API 可以直接複用哈希表的 API 來實現。
哈希集合的主要使用場景是「去重」,也就是不會出現重複的元素。
class MyHashSet {
    constructor() {
        // 這邊用的是 JavaScript 底層的 Map,用來儲存集合元素
        this.map = new Map();
    }
	// 增:向哈希集合中添加元素,複雜度 O(1)
    add(key) {
        // 向哈希表添加一個鍵值對,值用 true 作為佔位符
        this.map.set(key, true);
    }
	// 刪:從哈希集合中移除一個元素,複雜度 O(1)
    remove(key) {
        // 從哈希表中移除 key
        this.map.delete(key);
    }
	// 查:判斷元素是否存在,複雜度 O(1)
    contains(key) {
        // 判斷哈希表中是否包含 key
        return this.map.has(key);
    }
}
| 特性 | 哈希表(Hash Map) | 哈希集合(Hash Set) | 
|---|---|---|
| 儲存內容 | 鍵值對(key-value) | 
只有鍵 key | 
| 主要用途 | 映射關係查找 | 去重和存在性判斷 |